
//push constant 10
@10
D=A
@SP
A=M
M=D
@SP
M=M+1

//pop local 0
@SP
M=M-1
A=M
D=M
@LCL
A=M
M=D

//push constant 21
@21
D=A
@SP
A=M
M=D
@SP
M=M+1

//push constant 22
@22
D=A
@SP
A=M
M=D
@SP
M=M+1

//pop argument 2
@ARG
A=M
D=A
@2
D=D+A
@R14
M=D
@SP
M=M-1
A=M
D=M
@R14
A=M
M=D

//pop argument 1
@SP
M=M-1
A=M
D=M
@ARG
A=M
A=A+1
M=D

//push constant 36
@36
D=A
@SP
A=M
M=D
@SP
M=M+1

//pop this 6
@THIS
A=M
D=A
@6
D=D+A
@R14
M=D
@SP
M=M-1
A=M
D=M
@R14
A=M
M=D

//push constant 42
@42
D=A
@SP
A=M
M=D
@SP
M=M+1

//push constant 45
@45
D=A
@SP
A=M
M=D
@SP
M=M+1

//pop that 5
@THAT
A=M
D=A
@5
D=D+A
@R14
M=D
@SP
M=M-1
A=M
D=M
@R14
A=M
M=D

//pop that 2
@THAT
A=M
D=A
@2
D=D+A
@R14
M=D
@SP
M=M-1
A=M
D=M
@R14
A=M
M=D

//push constant 510
@510
D=A
@SP
A=M
M=D
@SP
M=M+1

//pop temp 6
@5
D=A
@6
D=D+A
@R14
M=D
@SP
M=M-1
A=M
D=M
@R14
A=M
M=D

//push local 0
@LCL
AD=M
D=M
@SP
A=M
M=D
@SP
M=M+1

//push that 5
@THAT
AD=M
@5
A=D+A
D=M
@SP
A=M
M=D
@SP
M=M+1

//add
@SP
M=M-1
A=M
D=M
@SP
M=M-1
A=M
D=D+M
@SP
A=M
M=D
@SP
M=M+1

//push argument 1
@ARG
AD=M
@1
A=D+A
D=M
@SP
A=M
M=D
@SP
M=M+1

//sub
@SP
M=M-1
A=M
D=M
@SP
M=M-1
A=M
D=M-D
@SP
A=M
M=D
@SP
M=M+1

//push this 6
@THIS
AD=M
@6
A=D+A
D=M
@SP
A=M
M=D
@SP
M=M+1

//push this 6
@THIS
AD=M
@6
A=D+A
D=M
@SP
A=M
M=D
@SP
M=M+1

//add
@SP
M=M-1
A=M
D=M
@SP
M=M-1
A=M
D=D+M
@SP
A=M
M=D
@SP
M=M+1

//sub
@SP
M=M-1
A=M
D=M
@SP
M=M-1
A=M
D=M-D
@SP
A=M
M=D
@SP
M=M+1

//push temp 6
@5
D=A
@6
A=D+A
D=M
@SP
A=M
M=D
@SP
M=M+1

//add
@SP
M=M-1
A=M
D=M
@SP
M=M-1
A=M
D=D+M
@SP
A=M
M=D
@SP
M=M+1